@echo off
chcp 65001 >nul
title 创建 Cloudflare 命名隧道 - 固定地址
color 0E

echo.
echo ========================================================
echo         创建 Cloudflare 命名隧道 - 获得固定地址
echo ========================================================
echo.

echo 🎯 命名隧道的优势:
echo    ✅ 固定的隧道地址，不会改变
echo    ✅ 更好的性能和稳定性
echo    ✅ 可以自定义域名
echo    ✅ 完全免费使用
echo.

echo 📋 操作步骤:
echo.
echo 1️⃣ 注册 Cloudflare 账号
echo    访问: https://dash.cloudflare.com/sign-up
echo    (完全免费，只需邮箱)
echo.

echo 2️⃣ 获取 API Token
echo    访问: https://dash.cloudflare.com/profile/api-tokens
echo    点击 "Create Token" → 选择 "Custom token"
echo    权限设置: Zone:Zone:Read, Zone:DNS:Edit
echo.

echo 3️⃣ 登录 cloudflared
set /p "continue=按回车键继续，或输入 'q' 退出: "
if /i "%continue%"=="q" exit /b 0

echo.
echo 🔐 正在启动登录流程...
echo 浏览器将自动打开，请完成登录
.\cloudflared.exe tunnel login

if %errorlevel% neq 0 (
    echo ❌ 登录失败，请重试
    pause
    exit /b 1
)

echo.
echo ✅ 登录成功！
echo.

echo 4️⃣ 创建命名隧道
set /p "tunnel_name=请输入隧道名称 (例如: patient-management): "
if "%tunnel_name%"=="" set tunnel_name=patient-management

echo.
echo 🚀 正在创建隧道: %tunnel_name%
.\cloudflared.exe tunnel create %tunnel_name%

if %errorlevel% neq 0 (
    echo ❌ 创建隧道失败
    pause
    exit /b 1
)

echo.
echo ✅ 隧道创建成功！
echo.

echo 5️⃣ 配置隧道路由
echo 🔧 正在配置 DNS 路由...
.\cloudflared.exe tunnel route dns %tunnel_name% %tunnel_name%.your-domain.com

echo.
echo 6️⃣ 创建配置文件
mkdir %USERPROFILE%\.cloudflared 2>nul
echo tunnel: %tunnel_name% > %USERPROFILE%\.cloudflared\config.yml
echo credentials-file: %USERPROFILE%\.cloudflared\%tunnel_name%.json >> %USERPROFILE%\.cloudflared\config.yml
echo ingress: >> %USERPROFILE%\.cloudflared\config.yml
echo   - hostname: %tunnel_name%.your-domain.com >> %USERPROFILE%\.cloudflared\config.yml
echo     service: http://localhost:8080 >> %USERPROFILE%\.cloudflared\config.yml
echo   - service: http_status:404 >> %USERPROFILE%\.cloudflared\config.yml

echo.
echo ✅ 配置完成！
echo.
echo 🎉 您的固定隧道地址: https://%tunnel_name%.your-domain.com
echo.
echo 📝 下次启动隧道使用:
echo    .\cloudflared.exe tunnel run %tunnel_name%
echo.

pause 